package com.yida.gwj.common.service.impl;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.yida.common.core.utils.StringUtils;
import com.yida.gwj.common.domain.GwjBaseBuild;
import com.yida.gwj.common.domain.request.GwjBaseBuildRequest;
import com.yida.gwj.common.mapper.GwjBaseBuildMapper;
import com.yida.gwj.common.service.IGwjBaseBuildService;

/**
 * 基础数据（楼栋）Service业务层处理
 *
 * @author lqq
 * @date 2022-11-14
 */
@Service
public class GwjBaseBuildServiceImpl implements IGwjBaseBuildService {

    @Autowired
    private GwjBaseBuildMapper buildMapper;

    /**
     * 查询基础数据（楼栋）
     *
     * @param buildId 基础数据（楼栋）主键
     * @return 基础数据（楼栋）
     */
    @Override
    public GwjBaseBuild selectGwjBaseBuildByBuildId(Long buildId) {
        return buildMapper.selectGwjBaseBuildByBuildId(buildId);
    }

    /**
     * 查询基础数据（楼栋）列表
     *
     * @param buildIds 楼栋ID集合
     * @return 基础数据（楼栋）集合
     */
    @Override
    public List<GwjBaseBuild> selectGwjBaseBuildListByBuildIds(Long[] buildIds) {
        return buildMapper.selectGwjBaseBuildListByBuildIds(buildIds);
    }

    /**
     * 查询基础数据（楼栋）列表
     *
     * @param buildRequest 请求参数
     * @return 基础数据（楼栋）集合
     */
    @Override
    public List<GwjBaseBuild> selectGwjBaseBuildDetailList(GwjBaseBuildRequest buildRequest) {
        if (StringUtils.isEmpty(buildRequest.getBuildIds()) && StringUtils.isNull(buildRequest.getCommunityId())) {
            return new ArrayList<>();
        }
        return buildMapper.selectGwjBaseBuildDetailList(buildRequest);
    }

    /**
     * 新增基础数据（楼栋）
     *
     * @param build 基础数据（楼栋）
     * @return 结果
     */
    @Override
    public int insertGwjBaseBuild(GwjBaseBuild build) {
        return buildMapper.insertGwjBaseBuild(build);
    }

    /**
     * 批量新增基础数据（楼栋）
     *
     * @param builds 基础数据（楼栋）
     * @return 结果
     */
    @Override
    public int insertBatchGwjBaseBuild(List<GwjBaseBuild> builds) {
        return buildMapper.insertBatchGwjBaseBuild(builds);
    }

    /**
     * 修改基础数据（楼栋）
     *
     * @param build 基础数据（楼栋）
     * @return 结果
     */
    @Override
    public int updateGwjBaseBuild(GwjBaseBuild build) {
        return buildMapper.updateGwjBaseBuild(build);
    }

    /**
     * 修改基础数据（楼栋）
     *
     * @param gwjBaseBuilds 基础数据（楼栋）
     * @return 结果
     */
    @Override
    public int updateBatchGwjBaseBuild(List<GwjBaseBuild> gwjBaseBuilds) {
        return buildMapper.updateBatchGwjBaseBuild(gwjBaseBuilds);
    }

    /**
     * 批量删除基础数据（楼栋）
     *
     * @param ids 需要删除的基础数据（楼栋）主键
     * @return 结果
     */
    @Override
    public int deleteGwjBaseBuildByBuildIds(Long[] ids) {
        return buildMapper.deleteGwjBaseBuildByBuildIds(ids);
    }

    /**
     * 删除基础数据（楼栋）信息
     *
     * @param id 基础数据（楼栋）主键
     * @return 结果
     */
    @Override
    public int deleteGwjBaseBuildByBuildId(Long id) {
        return buildMapper.deleteGwjBaseBuildByBuildId(id);
    }

    /******************* 新增方法保留区 ******************/

    @Override
    public List<GwjBaseBuild> selectGwjBaseBuildList(GwjBaseBuild baseBuild) {
        return buildMapper.selectGwjBaseBuildList(baseBuild);
    }

    @Override
    public List<GwjBaseBuild> selectGwjBaseBuildListByCommunityId(Long communityId) {
        return buildMapper.selectGwjBaseBuildListByCommunityId(communityId);
    }

    @Override
    public List<GwjBaseBuild> selectGwjBaseBuildByBuildIds(String buildIds) {
        return buildMapper.selectGwjBaseBuildByBuildIds(buildIds);
    }

    @Override
    public List<GwjBaseBuild> getGwjBaseBuildByIds(List<Long> buildIds) {
        return buildMapper.getGwjBaseBuildByIds(buildIds);
    }

    @Override
    public GwjBaseBuild selectGwjBaseBuildByBuildName(String buildName) {
        return buildMapper.selectGwjBaseBuildByBuildName(buildName);
    }

    @Override
    public int insertImportGwjCommBuild(GwjBaseBuild gwjCommBuild) {
        return buildMapper.insertImportGwjBaseBuild(gwjCommBuild);
    }

    @Override
    public int updateImportGwjCommBuild(GwjBaseBuild gwjCommBuild) {
        return buildMapper.updateImportGwjBaseBuild(gwjCommBuild);
    }

    @Override
    public boolean hasGwjBaseBuildByCommunityId(Long communityId) {
        return buildMapper.hasGwjBaseBuildByCommunityId(communityId) > 0;
    }

    @Override
    public int deleteGwjBaseBuildByGwjBaseBuildCodes(String[] buildCodes) {
        return buildMapper.deleteGwjBaseBuildByGwjBaseBuildCodes(buildCodes);
    }

    /******************* 新增方法保留区 ******************/

    /**
     * 根据地区ID和楼栋标识码查询基础数据（楼栋）
     *
     * @param areaId 地区ID
     * @param buildCode 楼栋标识吗
     * @return 基础数据（楼栋）
     */
    @Override
    public GwjBaseBuild selectGwjBaseBuildByAreaIdAndBuildCode(Long areaId, String buildCode) {
        return buildMapper.selectGwjBaseBuildByAreaIdAndBuildCode(areaId, buildCode);
    }

    /**
     * 根据楼栋ID组查询基础数据（楼栋）
     *
     * @param buildIds 基础数据（楼栋）主键
     * @return 基础数据（楼栋）
     */
    @Override
    public List<GwjBaseBuild> selectGwjBaseBuildByBuildIdList(Long[] buildIds) {
        return buildMapper.selectGwjBaseBuildByBuildIdList(buildIds);
    }

    /**
     * 根据房屋编号查询基础数据（楼栋）
     * 
     * @param buildCodes 楼栋编号
     * @return
     */
    @Override
    public List<GwjBaseBuild> selectGwjBaseBuildByBuildCodes(String[] buildCodes) {
        return buildMapper.selectGwjBaseBuildByBuildCodes(buildCodes);
    }

    /* 
     * 根据楼栋标识码组查询基础数据
     * 
     */
    @Override
    public List<GwjBaseBuild> selectGwjBaseBuildByBuildCodesAndAreaId(Long areaId, String[] buildCodes) {
        return buildMapper.selectGwjBaseBuildByBuildCodesAndAreaId(areaId, buildCodes);
    }
}
